package cn.jtcoding.cart.service.impl;


import cn.jtcoding.cart.api.CartService;
import cn.jtcoding.cart.pojo.bo.CartBO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
public class CartServiceImpl implements CartService {

    @Override
    public boolean addItemToCart(String userId, CartBO cartBO) {
        // 前端用户在登录的情况下，添加商品到购物车，会同时在后端同步购物车到redis缓存
        // 需要判断当前购物车中包含已经存在的商品，如果存在则累加购买数量
//        String shopcartJson = redisOperator.get(FOODIE_SHOPCART + ":" + userId);
//        List<CartBO> shopcartList = null;
//        if (StringUtils.isNotBlank(shopcartJson)) {
//            // redis中已经有购物车了
//            shopcartList = JsonUtils.jsonToList(shopcartJson, CartBO.class);
//            // 判断购物车中是否存在已有商品，如果有的话counts累加
//            boolean isHaving = false;
//            for (CartBO sc : shopcartList) {
//                String tmpSpecId = sc.getSpecId();
//                if (tmpSpecId.equals(cartBO.getSpecId())) {
//                    sc.setBuyCounts(sc.getBuyCounts() + cartBO.getBuyCounts());
//                    isHaving = true;
//                }
//            }
//            if (!isHaving) {
//                shopcartList.add(cartBO);
//            }
//        } else {
//            // redis中没有购物车
//            shopcartList = new ArrayList<>();
//            // 直接添加到购物车中
//            shopcartList.add(cartBO);
//        }

        // 覆盖现有redis中的购物车
        // redisOperator.set(FOODIE_SHOPCART + ":" + userId, JsonUtils.objectToJson(shopcartList));

        return true;
    }

    @Override
    public boolean removeItemFromCart(String userId, String itemSpecId) {
        // 用户在页面删除购物车中的商品数据，如果此时用户已经登录，则需要同步删除redis购物车中的商品
//        String shopcartJson = redisOperator.get(FOODIE_SHOPCART + ":" + userId);
//        if (StringUtils.isNotBlank(shopcartJson)) {
//            // redis中已经有购物车了
//            List<CartBO> shopcartList = JsonUtils.jsonToList(shopcartJson, CartBO.class);
//            // 判断购物车中是否存在已有商品，如果有的话则删除
//            for (CartBO sc : shopcartList) {
//                String tmpSpecId = sc.getSpecId();
//                if (tmpSpecId.equals(itemSpecId)) {
//                    shopcartList.remove(sc);
//                    break;
//                }
//            }
//            // 覆盖现有redis中的购物车
//            redisOperator.set(FOODIE_SHOPCART + ":" + userId, JsonUtils.objectToJson(shopcartList));
//        }

        return true;
    }

    @Override
    public boolean clearCart(String userId) {
//        redisOperator.del(FOODIE_SHOPCART + ":" + userId);
        return true;
    }
}
